#ifndef INPUT_HH_
# 	define INPUT_HH_

#	include "constants/default_keys.h"

//enum e_mouse_buttons
//{
//	BUT_1 =			0x0000,
//	BUT_2 =			0x0001,
//	BUT_3 =			0x0002,
//	BUT_4 =			0x0004,
//	BUT_5 =			0x0008,
//	BUT_6 =			0x0010,
//	BUT_7 =			0x0020,
//	BUT_8 =			0x0040,
//
//	BUT_LEFT =		0x0080,
//	BUT_RIGHT =		0x0100,
//	BUT_MIDDLE =	0x0200
//};

enum e_mouse_buttons
{
    BUT_1 = 0,
    BUT_2,
    BUT_3,
    BUT_4,
    BUT_5,
    BUT_6,
    BUT_7,
    BUT_8,

    BUT_LEFT,
    BUT_RIGHT,
    BUT_MIDDLE,

    NB_MOUSE_BUTTONS
};

enum e_input_control
{
    CONTROL_CHARACTER = 0
};

class Input
{
    public:
        /** Default constructor */
        Input();
        /** Default destructor */
        ~Input();

        bool quit() const;

        // rename this
        void treatEvent();

        void treatKeyboard();

        // call-backs
        static void keyboardCallback(int key, int state);
        static void mouseButtonsCallback(int button, int state);
        static void mousePositionCallback(int x, int y);

    private:
        bool _quit;

        // Mouse
        // int _mouseButtons; // use flags to pack the 11 buttons on the same int

        bool _mouseButtons[NB_MOUSE_BUTTONS];
};

#endif // INPUT_HH_
